import re
import pandas as pd

# 定义文件路径
txt_file = '../test/stillstatus.txt'
excel_file = '../test/output2.xlsx'

# 定义正则表达式
time_pattern = re.compile(r'\[(\d{2}:\d{2}:\d{2}\.\d{3})\]')
est_pattern = re.compile(r'est\[(\d+\.\d+),(\d+\.\d+),(\d+\.\d+),(\d+)\]')

# 初始化数据列表
data = []

# 尝试使用不同的编码方式读取文件
encodings = ['utf-8', 'latin1', 'iso-8859-1', 'cp1252']
for encoding in encodings:
    try:
        with open(txt_file, 'r', encoding=encoding, errors='ignore') as file:
            for line in file:
                # 提取时间
                time_match = time_pattern.search(line)
                if time_match:
                    time = time_match.group(1)
                else:
                    continue  # 如果没有时间戳，跳过这一行

                # 提取est信息
                est_match = est_pattern.search(line)
                if est_match:
                    x, y, z, q = est_match.groups()
                else:
                    x, y, z, q = None, None, None, None

                # 将数据添加到列表
                data.append([time, x, y, z, q])
        break  # 如果成功读取文件，退出循环
    except Exception as e:
        print(f"尝试使用编码 {encoding} 读取文件时出错: {e}")

# 如果所有编码方式都失败，提示用户
if not data:
    print("无法读取文件，请检查文件编码或内容。")
else:
    # 转换为DataFrame
    df = pd.DataFrame(data, columns=['Time', 'X', 'Y', 'Z', 'Q'])

    # 写入Excel文件
    df.to_excel(excel_file, index=False)

    print(f"数据已成功写入 {excel_file}")